.\" Copyright (c) 2017, Michael Kerrisk <mtk.manpages@gmail.com>
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.TH pthread_mutexattr_getpshared 3 2024-05-02 "Linux man-pages 6.9.1"
.SH NAME
pthread_mutexattr_getpshared, pthread_mutexattr_setpshared \- get/set
process-shared mutex attribute
.SH LIBRARY
POSIX threads library
.RI ( libpthread ", " \-lpthread )
.SH SYNOPSIS
.nf
.B #include <pthread.h>
.P
.B int pthread_mutexattr_getpshared(
.BI "                      const pthread_mutexattr_t *restrict " attr ,
.BI "                      int *restrict " pshared );
.BI "int pthread_mutexattr_setpshared(pthread_mutexattr_t *" attr ,
.BI "                      int " pshared );
.fi
.SH DESCRIPTION
These functions get and set the process-shared attribute
in a mutex attributes object.
This attribute must be appropriately set to ensure correct,
efficient operation of a mutex created using this attributes object.
.P
The process-shared attribute can have one of the following values:
.TP
.B PTHREAD_PROCESS_PRIVATE
Mutexes created with this attributes object are to be shared
only among threads in the same process that initialized the mutex.
This is the default value for the process-shared mutex attribute.
.TP
.B PTHREAD_PROCESS_SHARED
Mutexes created with this attributes object can be shared between
any threads that have access to the memory containing the object,
including threads in different processes.
.P
.BR pthread_mutexattr_getpshared ()
places the value of the process-shared attribute of
the mutex attributes object referred to by
.I attr
in the location pointed to by
.IR pshared .
.P
.BR pthread_mutexattr_setpshared ()
sets the value of the process-shared attribute of
the mutex attributes object referred to by
.I attr
to the value specified in
.BR pshared .
.P
If
.I attr
does not refer to an initialized mutex attributes object,
the behavior is undefined.
.SH RETURN VALUE
On success, these functions return 0.
On error, they return a positive error number.
.SH ERRORS
.BR pthread_mutexattr_setpshared ()
can fail with the following errors:
.TP
.B EINVAL
The value specified in
.I pshared
is invalid.
.TP
.B ENOTSUP
.I pshared is
.B PTHREAD_PROCESS_SHARED
but the implementation does not support process-shared mutexes.
.SH STANDARDS
POSIX.1-2008.
.SH HISTORY
POSIX.1-2001.
.SH SEE ALSO
.ad l
.nh
.BR pthread_mutexattr_init (3),
.BR pthreads (7)
